package com.ruoyi.mapper;

import com.ruoyi.entity.JrPermission;
import com.ruoyi.entity.vo.PermissionBatchDTO;
import org.apache.ibatis.annotations.Param;

import java.util.List;

public interface PermissionMapper {
    int insertPermission(JrPermission permission);

    List<Long> selectOldRefIds(
            @Param("userIds") List<Long> userIds,
            @Param("roleIds") List<Long> roleIds,
            @Param("refType") Integer refType
    );

    /**
     * 查询用户/角色对指定资源的权限
     * @param userId 用户ID
     * @param roleIds 角色ID列表
     * @param refType 资源类型（0-文件，1-文件夹）
     * @param refId 资源ID
     * @return 权限记录列表
     */
    List<JrPermission> selectByUserAndResource(
            @Param("userId") Long userId,
            @Param("roleIds") List<Long> roleIds,
            @Param("refType") Integer refType,
            @Param("refId") Long refId
    );

    List<JrPermission> selectPermissions(@Param("dto") PermissionBatchDTO dto);

    // 批量插入
    int batchInsert(@Param("list") List<JrPermission> list);

    // 清除旧权限
    int deleteByConditions(@Param("userIds") List<Long> userIds,
                           @Param("roleIds") List<Long> roleIds,
                           @Param("refIds") List<Long> refIds,
                           @Param("refType") Integer refType);
}
